Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - [C++] linking error Multiple definition
Forum - C/C++ - [C++] linking error Multiple definition

Avatar
Twizer (Normal User)
Newbie


Messaggi: 9
Iscritto: 30/10/2010

Segnala al moderatore
Postato alle 15:55
Sabato, 01/01/2011
innanzitutto buon anno a tutti :k:

vi spiego subito il mio problema
scrivendo il codice per un progetto utilizzo due funzioni in due classi differenti, mi spiego meglio

le funzioni nello specifico sono una string_to_int e una int_to_string
completamente slegabili dalle classi che ne richiedono l'uso.

Per questo motivo ho deciso di scrivere un header (basic.h) a parte contenente le due funzioni e poi di farle richiamare dalle classi con una #include

il problema è che basic.h venendo inclusa 2 volte in fase di compilazione mi restituisce un errore di multiple definition...

come è possibile risolvere questo problema?

grazie anticipatamente

PM
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Up
3
Down
V
Segnala al moderatore
Postato alle 17:43
Sabato, 01/01/2011
Testo quotato

Postato originariamente da carlduke:

nel file .h usa le direttive :

Codice sorgente - presumibilmente C/C++

  1. #ifndef BASIC_H
  2.  #define BASIC_H
  3.      ....
  4.      codice
  5.      ....
  6.  
  7. #endif



e, sempre nell'header, dichiara solo i prototipi delle funzioni come extern.
Crea un file .cpp, magari con lo stesso nome dell'header per individuarlo (quindi basic.cpp) e li implementa le funzioni vere e proprie. ricordati di includere l'header e di aggiungere il file .cpp al progetto o non verrà trovato il corpo delle funzioni e otterrai di nuovo errore! :k:



oppure funziona anche

#pragma once

PM
Avatar
()
Newbie


Messaggi:
Iscritto:

Up
1
Down
V
Segnala al moderatore
Postato alle 16:05
Sabato, 01/01/2011
nel file .h usa le direttive :

Codice sorgente - presumibilmente C/C++

  1. #ifndef BASIC_H
  2.  #define BASIC_H
  3.      ....
  4.      codice
  5.      ....
  6.  
  7. #endif



e, sempre nell'header, dichiara solo i prototipi delle funzioni come extern.
Crea un file .cpp, magari con lo stesso nome dell'header per individuarlo (quindi basic.cpp) e li implementa le funzioni vere e proprie. ricordati di includere l'header e di aggiungere il file .cpp al progetto o non verrà trovato il corpo delle funzioni e otterrai di nuovo errore! :k:

Ultima modifica effettuata da il 01/01/2011 alle 16:06
PM
Avatar
Twizer (Normal User)
Newbie


Messaggi: 9
Iscritto: 30/10/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 20:11
Sabato, 01/01/2011
Grazie ad entrambi, sono riuscito a risolvere
:k:

PM